package com.example.demojpa.dao;

import com.example.demojpa.entity.ElectronUrl;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

/**
 * @author 赵恒
 * @date 2023/4/28
 */
public interface ElectronUrlDao extends JpaRepository<ElectronUrl, Integer> {

    @Query(value = "SELECT * FROM electron_url WHERE url LIKE CONCAT('%',:ip,'%')", nativeQuery = true)
    List<ElectronUrl> findByUrlLike(@Param("ip") String ip);

    /**
     * 使用原生的 SQL 语句，参数使用问号 ?1 表示
     * @param id ID
     * @return ElectronUrl List
     */
    @Query(value = "SELECT * FROM electron_url WHERE id = ?1", nativeQuery = true)
    List<ElectronUrl> findByIdSql(Integer id);

    /**
     * 使用原生的 SQL 语句，参数使用冒号 :title 表示
     * @param title title
     * @return ElectronUrl List
     */
    @Query(value = "SELECT * FROM electron_url WHERE title = :title", nativeQuery = true)
    List<ElectronUrl> findByTitleSql(String title);

    /**
     * 使用原生的 SQL 语句，参数为实体类，使用 spEL表达式，方式为 :#{#electronUrl.id}
     * @param electronUrl ElectronUrl实体类
     * @return ElectronUrl List
     */
    @Query(value = "SELECT * FROM electron_url WHERE id = :#{#electronUrl.id} OR title = :#{#electronUrl.title}", nativeQuery = true)
    List<ElectronUrl> findByEntitySql(ElectronUrl electronUrl);

    @Query(value = "SELECT * FROM electron_url WHERE id in (?1)", nativeQuery = true)
    List<ElectronUrl> findByIdsSql(List<Integer> idList);
}
